<?php
namespace WeChatPay\Request;

use function WeChatPay\FilterParam;
use function WeChatPay\FuncReturn;

/**
 * 申请交易账单API
 * 微信支付按天提供交易账单文件，商户可以通过该接口获取账单文件的下载地址。文件内包含交易相关的金额、时间、营销等信息，供商户核对订单、退款、银行到账等情况。
 * Class WeChatPayTradeTradeBillRequest
 * @package WeChatPay\Request
 */
class WeChatPayTradeTradeBillRequest extends AbstractBaseRequest
{
    protected $apiUri = "v3/bill/tradebill";

    /**
     * 请求方式
     * @var string
     */
    public $requestType = 'get';

    /**
     * 必填参数列表
     * @var array
     */
    protected $mustAddParams = ['bill_date'];

    /**
     * 属性映射方法名称
     * @var array
     */
    protected $propertyMapSetFunction = [
        'bill_date	'    =>  'setBillDate',
        'bill_type	'    =>  'setBillType',
        'tar_type	'    =>  'setTarType',
    ];

    /**
     * 账单日期:格式yyyy-MM-dd 仅支持三个月内的账单下载申请
     * @var string
     */
    protected $bill_date = "";

    /**
     * 账单类型
     * @var string
     */
    protected $bill_type = "";

    /**
     * 压缩类型
     * @var string
     */
    protected $tar_type = "";

    /**
     * 获取配置基础参数列表
     * @return array
     */
    public function getBaseParams(): array {
        return [];
    }

    /**
     * 获取账单日期
     * @return string
     */
    public function getBillDate(): string
    {
        return $this->bill_date;
    }

    /**
     * 设置账单日期
     * @param string $bill_date
     */
    public function setBillDate(string $bill_date): void
    {
        $this->addQueryParams('bill_date');
        $this->bill_date = $bill_date;
    }

    /**
     * 获取账单类型
     * @return string
     */
    public function getBillType(): string
    {
        return $this->bill_type;
    }

    /**
     * 设置账单类型
     * @param string $bill_type
     */
    public function setBillType(string $bill_type): void
    {
        $this->addQueryParams('bill_type');
        $this->bill_type = $bill_type;
    }

    /**
     * 获取压缩类型
     * @return string
     */
    public function getTarType(): string
    {
        return $this->tar_type;
    }

    /**
     * 设置压缩类型
     * @param string $tar_type
     */
    public function setTarType(string $tar_type): void
    {
        $this->addQueryParams('tar_type');
        $this->tar_type = $tar_type;
    }
}